' ****************************************************************************
' 版权说明：Copyright（C） All Rights Reserved VcnStudio
' 程序版本：V1.0
' 程序作者：
' 联系信息：
' 创建时间：2023-10-15 13:39
' 组件描述：
' 修改日志：
' ****************************************************************************
变量 私有 列表数据 为 集合
变量 私有 图片尺寸 为 组件尺寸
变量 私有 按钮尺寸 为 组件尺寸

变量 图片可视 为 逻辑型
变量 选择框可视 为 逻辑型
变量 按钮可视 为 逻辑型
'变量 按钮圆角 为 整数型 '圆角有bug

变量 属性名文本尺寸 为 整数型
变量 属性值文本尺寸 为 整数型
变量 属性说明文本尺寸 为 整数型

变量 属性名文本颜色 为 文本型
变量 属性值文本颜色 为 文本型
变量 属性说明文本颜色 为 文本型


' 组件创建完毕时触发该事件
事件 组件创建完毕()
	列表数据=创建 集合()
    线性布局1.高度=-1
    初始化基础样式()
    初始化下载引擎(0,0,0,0)
    列表框1.初始化适配器(列表数据)
结束 事件

函数 私有 初始化基础样式()
    图片尺寸=创建 组件尺寸(DP到PX(48),DP到PX(48))
    按钮尺寸=创建 组件尺寸(DP到PX(60),DP到PX(40))
    图片可视=真
    属性名文本尺寸=16
    属性值文本尺寸=12
    属性说明文本尺寸=12
    
    属性名文本颜色="#000000"
    属性值文本颜色="#FF0000"
    属性说明文本颜色="#808080"
结束 函数

函数 初始化下载引擎(加载时索引 为 整数型,内容为空索引 为 整数型,加载失败索引 为 整数型,图片圆角弧度 为 整数型)
    图片下载器1.置自定义圆角配置(加载时索引,内容为空索引,加载失败索引,15,图片圆角弧度)
结束 函数

函数 取原列表对象() 为 列表框
    返回 列表框1
结束 函数

函数 刷新()
    列表框1.刷新()
结束 函数

函数 清空()
    列表数据.清空()
    列表框1.刷新()
结束 函数

函数 删除项目(索引 为 整数型)
    列表数据.删除项目(索引)
    列表框1.刷新()
结束 函数

函数 取项目数() 为 整数型
    返回 列表数据.取项目数()
结束 函数

函数 滚动到指定项目(索引 为 整数型)
    列表框1.滚动到指定项目(索引)
结束 函数

函数 置滚动条可视(值 为 逻辑型)
    列表框1.置滚动条可视(值)
结束 函数

'默认为假
函数 置自动拉伸高度(是否自适应 为  逻辑型)
    列表框1.自动拉伸高度=是否自适应
结束 函数

函数 置按钮尺寸(宽 为 整数型,高 为 整数型)
    按钮尺寸.组件宽=宽
    按钮尺寸.组件高=高
结束 函数

函数 置图片尺寸(宽 为 整数型,高 为 整数型)
    图片尺寸.组件宽=宽
    图片尺寸.组件高=高
结束 函数

函数 取项目(项目索引 为 整数型) 为 属性列表框项目
    变量 子项目 为 属性列表框项目
    如果(项目索引<0 或 项目索引 >= 列表数据.取项目数())
        子项目= 创建 属性列表框项目()
    否则
        子项目= 列表数据.取项目(项目索引)
    结束 如果
    子项目.临时索引=项目索引
    返回 子项目
结束 函数

函数 添加项目(图片 为 文本型,属性名 为 文本型,属性值 为 文本型,属性说明 为 文本型,按钮标题 为 文本型,按钮图片 为 文本型)
    变量 子项目 = 创建 属性列表框项目()
    子项目.图片=图片
    子项目.属性名=属性名
    子项目.属性值=属性值
    子项目.属性说明=属性说明
    子项目.按钮标题=按钮标题
    子项目.按钮图片=按钮图片
    添加项目对象(子项目)
结束 函数

函数 添加项目对象(子项目 为 属性列表框项目)
    列表数据.添加项目(子项目)
    列表框1.刷新()
结束 函数

函数 插入项目对象(项目索引 为 整数型,子项目 为 属性列表框项目)
    列表数据.插入项目(项目索引,子项目)
    列表框1.刷新()
结束 函数

函数 修改项目对象(项目索引 为 整数型,子项目 为 属性列表框项目)
    列表数据.设置项目(项目索引,子项目)
    列表框1.刷新()
结束 函数

函数 置项目状态(项目索引 为 整数型,状态 为 逻辑型)
    变量 子项目 为 属性列表框项目=取项目(项目索引)
    子项目.选择框状态=状态
    列表数据.设置项目(项目索引,子项目)
    列表框1.刷新()
结束 函数

函数 取项目状态(项目索引 为 整数型) 为 逻辑型
    变量 子项目 为 属性列表框项目=取项目(项目索引)
    返回 子项目.选择框状态
结束 函数

公开 事件 项目被单击(来源对象 为 属性列表框,项目索引 为 整数型)
函数 项目单击(来源对象 为 视图)
    项目被单击(本对象,到整数(来源对象.标记+""))
结束 函数

公开 事件 项目被长按(来源对象 为 属性列表框,项目索引 为 整数型)
函数 项目长按(来源对象 为 视图)
    项目被长按(本对象,到整数(来源对象.标记+""))
结束 函数

公开 事件 选择框被单击(来源对象 为 属性列表框,项目索引 为 整数型,选中状态 为 逻辑型)
函数 选择框被点(来源对象 为 视图)
    变量 索引 为 整数型=到整数(来源对象.标记+"")
    置项目状态(索引,!取项目状态(索引))
    选择框被单击(本对象,索引,取项目状态(索引))
结束 函数

公开 事件 图片被单击(来源对象 为 属性列表框,项目索引 为 整数型)
函数 图片被点(来源对象 为 视图)
    图片被单击(本对象,到整数(来源对象.标记+""))
结束 函数

公开 事件 项目按钮被单击(来源对象 为 属性列表框,项目索引 为 整数型)
函数 按钮被点(来源对象 为 视图)
    项目按钮被单击(本对象,到整数(来源对象.标记+""))
结束 函数

公开 事件 项目按钮被长按(来源对象 为 属性列表框,项目索引 为 整数型)
函数 按钮长按(来源对象 为 视图)
    项目按钮被长按(本对象,到整数(来源对象.标记+""))
结束 函数

公开 事件 项目滚动到顶部(来源对象 为 属性列表框)
公开 事件 项目滚动到底部(来源对象 为 属性列表框)
事件 列表框1.项目被滚动(来源对象 为 列表框,首个可见项 为 整数型,可见项数 为 整数型,总项目数 为 整数型)
    如果(首个可见项 == 总项目数 - 可见项数)
        项目滚动到底部(本对象)
    否则 如果(首个可见项 == 0)
        项目滚动到顶部(本对象)
    结束 如果
结束 事件

事件 列表框1.请求加载项目(索引 为 整数型,根视图 为 视图)
    '调试输出(索引+"|"+列表框1.取项目数(),"标记")
    变量 子视图 为 线性布局
    如果(根视图.标记==空)
        子视图=创建 线性布局()
        根视图.标记=子视图
        根视图.置视图(子视图)
    否则
        子视图=根视图.标记
    结束 如果  
    置模板数据(子视图,取项目(索引))
结束 事件

函数 置模板数据(模板布局 为 线性布局,子项目 为 属性列表框项目)
    模板布局.清空()
    变量 选择框 =创建 多选框()
    变量 子图片 = 创建 图片框()
    变量 子布局 =创建 线性布局()
    变量 属性名 = 创建 标签()
    变量 属性值 = 创建 标签()
    变量 属性说明 = 创建 标签()
    变量 子按钮 =创建 按钮()
    模板布局.宽度=-1
    模板布局.高度=-2
    模板布局.布局方向=0
    模板布局.内容对齐方式=垂直居中靠左
    模板布局.置缩进(DP到PX(5))
    如果(子项目.项目背景颜色 !=空 且 !子项目.项目背景颜色=="")
        模板布局.背景颜色=子项目.项目背景颜色
    结束 如果
    
    选择框.可视=选择框可视
    选择框.选中=子项目.选择框状态
    选择框.标记=子项目.临时索引
    选择框.置被单击回调(&选择框被点)
    模板布局.添加组件(选择框)
    
    如果(子项目.图片==空 或 子项目.图片=="")
        子图片.图片=""
    否则
        变量 img 为 文本型=""
        如果(取文本左边(子项目.图片,4)=="http" 或 取文本左边(子项目.图片,9)=="assets://")
            img=子项目.图片
        否则
            img="assets://"+子项目.图片
        结束 如果
        图片下载器1.加载图片(img,子图片)
    结束 如果
    
    子图片.宽度=图片尺寸.组件宽
    子图片.高度=图片尺寸.组件高
    子图片.标记=子项目.临时索引
    子图片.可视=图片可视
    子图片.置被单击回调(&图片被点)
    模板布局.添加组件(子图片)


    模板布局.添加组件置权重(子布局,1,-1,1)
    
    属性名.内容对齐方式=垂直居中靠左
    属性名.文本尺寸=属性名文本尺寸
    属性名.文本颜色=属性名文本颜色
    属性名.标题=子项目.属性名
    属性名.标记=子项目.临时索引
    属性名.置被单击回调(&项目单击)
    属性名.置被长按回调(&项目长按)
    子布局.添加组件置权重(属性名,-1,-2,1)
    
    属性值.内容对齐方式=垂直居中靠左
    属性值.文本尺寸=属性值文本尺寸
    属性值.文本颜色=属性值文本颜色
    属性值.标题=子项目.属性值
    属性值.标记=子项目.临时索引
    属性值.置被单击回调(&项目单击)
    属性值.置被长按回调(&项目长按)
    如果(子项目.属性值 !=空 且 !子项目.属性值=="")
        子布局.添加组件置权重(属性值,-1,-2,1)
    结束 如果
    
    属性说明.内容对齐方式=垂直居中靠左
    属性说明.文本尺寸=属性说明文本尺寸
    属性说明.文本颜色=属性说明文本颜色
    属性说明.标题=子项目.属性说明
    属性说明.标记=子项目.临时索引
    属性说明.置被单击回调(&项目单击)
    属性说明.置被长按回调(&项目长按)
    如果(子项目.属性说明 !=空 且 !子项目.属性说明=="")
        子布局.添加组件置权重(属性说明,-1,-2,1)
    结束 如果
    
    如果(子项目.按钮文本颜色==空 或 子项目.按钮文本颜色=="")
        子项目.按钮文本颜色="#FFFFFF"
    结束 如果
    如果(子项目.按钮文本尺寸<=0)
        子项目.按钮文本尺寸=12
    结束 如果
    子按钮.可视=按钮可视
    子按钮.文本颜色=子项目.按钮文本颜色
    子按钮.文本尺寸=子项目.按钮文本尺寸
    子按钮.宽度=按钮尺寸.组件宽
    子按钮.高度=按钮尺寸.组件高
    子按钮.标题=子项目.按钮标题
    子按钮.置被单击回调(&按钮被点)
    子按钮.置被长按回调(&按钮长按)
    '如果(按钮圆角>0)
        '子按钮.置圆角(按钮圆角)
    '结束 如果
    如果(子项目.按钮背景颜色 !=空 且 !子项目.按钮背景颜色=="")
        子按钮.背景颜色=子项目.按钮背景颜色
    结束 如果
    如果(子项目.按钮图片 !=空 且 !子项目.按钮图片=="")
        子按钮.背景图片=子项目.按钮图片
    结束 如果
    子按钮.标记=子项目.临时索引
    模板布局.添加组件(子按钮)    
结束 函数

定义 属性列表框项目 为 结构
    变量 选择框状态 为 逻辑型
    变量 图片 为 文本型
    变量 属性名 为 文本型
    变量 属性值 为 文本型
    变量 属性说明 为 文本型
    变量 按钮标题 为 文本型
    变量 按钮图片 为 文本型
    变量 按钮背景颜色 为 文本型
    变量 按钮文本颜色 为 文本型
    变量 按钮文本尺寸 为 整数型
    变量 项目背景颜色 为 文本型
    变量 标记 为 对象
    变量 地址 为 文本型
    '此属性用于处理回调事件
    变量 临时索引 为 整数型
结束 定义

定义 组件尺寸 为 结构
    变量 组件宽 为 整数型
    变量 组件高 为 整数型
结束 定义










